using System;
using Spectre.Console;
using Spectre.Console.Rendering;

namespace Generator.Commands;

public sealed class AsciiCastConsole : IAnsiConsole
{
    private readonly IAnsiConsole _console;
    private readonly AsciiCastInput _input;

    public Profile Profile => _console.Profile;

    public IAnsiConsoleCursor Cursor => _console.Cursor;

    IAnsiConsoleInput IAnsiConsole.Input => _input;

    public AsciiCastInput Input => _input;

    public IExclusivityMode ExclusivityMode => _console.ExclusivityMode;

    public RenderPipeline Pipeline => _console.Pipeline;

    public AsciiCastConsole(IAnsiConsole console)
    {
        _console = console ?? throw new ArgumentNullException(nameof(console));
        _input = new AsciiCastInput();
    }

    public void Clear(bool home)
    {
        _console.Clear(home);
    }

    public void Write(IRenderable renderable)
    {
        _console.Write(renderable);
    }
}